package com.example.empleemanagesystem.entity;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.Instant;

// 使用Lombok的注解
// 自动生成Getter、Setter、toString、equals、hashCode等方法
@Data
// 自动生成一个包含所有参数的构造函数
@AllArgsConstructor
// 自动生成一个无参构造函数
@NoArgsConstructor
// 使用Builder模式生成对象
@Builder
// 标记这个类是一个JPA实体类，表明它会被映射到数据库中的一张表
@Entity
// 如果没有指定表名，默认使用类名作为表名，也可以通过@Table注解的name属性指定具体的表名
@Table
public class User {
    // 主键字段
    @Id
    // 配置主键的生成策略为自增长
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    // 映射到数据库表中的对应列
    // 用户名，唯一且不能为空
    @Column(unique = true, nullable = false)
    private String username;
    // 密码，不能为空
    @Column(nullable = false)
    private String password;
    // 盐值，不能为空
    @Column(nullable = false)
    private String salt;
    // 记录修改时间
    @Column
    private Instant gmtModified;
    // 记录创建时间
    @Column
    private Instant gmtCreate;
}